When a plurality of program developers cooperate together to develop a computer program, sometimes it is preferable to conceal a program code developed by a program developer before providing the program code to the other program developers. Let us assume that, as an example, a program developer A delegates a part of his/her development task to a program developer B. While the developer A need to provide a program code he/she developed to the developer B, the developer A may not want to disclose his/her development know-hows or confidential information included in the program code to the developer B.
Encryption is an exemplary way to conceal a program code before providing the code to the other developer. When the developer B uses a general-purpose linker to process the provided program code, however, it is necessary to decrypt the encrypted program code temporarily before inputting the code into the linker, because the general-purpose linker is incapable of processing an encrypted program code. In such a case, because the program code is temporarily decrypted, the developer B is allowed to access the program code, and the objective mentioned above cannot be achieved. Another solution to this problem is asking the developer B to use a special linker capable of accepting an encrypted file to process the program code that is developed and encrypted by the developer A. In such a case, however, because the linker itself needs to be modified, extra development burdens are imposed. Furthermore, such a special linker is not acceptable in an environment where such a special linker cannot be used.